package com.cooksys.film_rental.dao;

import java.util.List;

import com.cooksys.film_rental.model.Category;
import com.cooksys.film_rental.model.Film;
import com.cooksys.film_rental.model.FilmCategory;
import com.cooksys.film_rental.model.FilmCategoryId;

/**
 * Data access object for the {@link FilmCategory} class
 * 
 * @author Peter Zastoupil
 * 
 */
public interface FilmCategoryDao {

	/**
	 * 
	 * @param filmCategoryId
	 *            the filmCategoryId to search by
	 * @return a {@link FilmCategory} object that corresponds to the given
	 *         filmCategoryId
	 */
	public FilmCategory getFilmCategoryByFilmCategoryId(
			FilmCategoryId filmCategoryId);

	/**
	 * 
	 * @param film
	 *            the {@link Film} to search by
	 * @return a list of {@link FilmCategory} objects associated with the given
	 *         film
	 */
	public List<FilmCategory> searchFilmCategoriesByFilm(Film film);

	/**
	 * 
	 * @param category
	 *            the {@link Category} to search by
	 * @return a list of {@link FilmCategory} objects associated with the given
	 *         category
	 */
	public List<FilmCategory> searchFilmCategoriesByCategory(Category category);

}
